const gocLanguage = {
  // 高亮关键字
  keywords: [
    'int', 'double', 'main', 'for','if','else', 'return', 'wait', 'cin', 'cout', 'cinWin', 'endl', 'setprecision', 'down','size',
    'fixed', 'scientific', 'defaultfloat', 'pen', 'p','fd', 'rt','bk','lt', 'text', 'textSize', 'textU', 'font', 
    'show','showXY','rr','r','oo','o','e','ee', 'moveto','lineto','pic','picL','hide', 'up','cls', 'speed', 'picU','c','rgb',
    'break', 'continue'
  ],

  // 运算符
  operators: [
    '=', '+', '-', '*', '/', '++', '--', '<', '>', '<=', '>=', '==', '!=', '.', '(', ')', '{', '}', ';'
  ],

  // 运算符符号匹配
  symbols: /[=+\-*/<>!.]+/,

  tokenizer: {
    root: [
      // 注释（优先匹配）
      [/^[\s\t]*\/\/.*$/, 'comment'], // 行首或缩进后整行注释
      [/\/\/.*$/, 'comment'],           // 行内注释

      // 字符串
      [/"([^"\\]|\\.)*"/, 'string'],

      // 关键字和标识符
      [/[a-zA-Z_][\w_]*/, {
        cases: {
          '@keywords': 'keyword',
          '@default': 'identifier'
        }
      }],

      // 数字
      [/\d*\.\d+/, 'number.float'],
      [/\d+/, 'number'],

      // 运算符
      [/@symbols/, 'operator'],

      // 括号、分隔符
      [/[{}()[\]\]]/, '@brackets'],
      [/[;,.]/, 'delimiter'],

      // 空白
      [/[ \t\r\n]+/, 'white']
    ],

    string: [
      [/[^\\"]+/, 'string'],
      [/\\./, 'string.escape.invalid'],
      [/"/, { token: 'string.quote', bracket: '@close', next: '@pop' }]
    ]
  }
};

export default gocLanguage